import types

#定义⼀个静态⽅法
@staticmethod
def test():
    print("----static method----")

#定义⼀个类⽅法
@classmethod
def test_2(cls):
    print("class method")

class Person(object):
    def __init__(self, newName, newAge):
        self.name = newName
        self.age = newAge

    def eat(self):
        print("-----%s正在吃----" % self.name)

#定义⼀个实例⽅法
def run(self):
    print("-----%s正在跑----" % self.name)


p1 = Person("p1", 10)
p1.eat()
# 虽然p1对象中 run属性已经指向了10行的函数,,,但是这句代码还不正确
# 因为run属性指向的函数 是后来添加的,几p1.run()的时候,并没有把p1当做第
# 1个参数,导致了第10行的函数调用的时候, 出现缺少参数的问题
p1.run = run
p1.run

print("---------------")
# 这样才是正确的 给这个对象添加实例⽅法
p1.run = types.MethodType(run, p1)
p1.run()

# 静态方法的写法
Person.static = test
Person.static()




# 给Person类绑定类⽅法
Person.cm = test_2
Person.cm()